package com.ht.interfaces.service;

import com.ht.api.db.Db;
import com.ht.api.db.DbConfig;
import com.ht.api.db.DbList;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;

/**
 * 系统初始化相关Service
 * @author asq
 * @createTime 2025年4月15日 11:21:31
 */
@Slf4j
public class InitService {
	// 加载租户数据源到内存中
	public static void loadTenantDataSource() {
		log.info("[cache]加载所有租户数据源开始...");
		DbConfig.tenantDSMap.clear(); // 清除所有数据源，然后重新加载
		DbList list = Db.createSqlParser("sys_tenant").query();
		list.stream().forEach(entity -> {
			long tenantId = entity.getLong("main_id");
			JSONObject config = JSONUtil.parseObj(entity.getStr("config"));
			
			try {
				// 加载jdbc数据源
				DbConfig.loadTenantDs(tenantId, config);
				
				// 加载StreamLoad数据源
				DbConfig.loadTenantSLC(tenantId, config);
			} catch (Exception e) {
				log.error("[cache]加载租户数据源失败，请检查。租户ID：{}，数据源配置：{}", tenantId, config);
			}
		});
		log.info("[cache]成功加载{}个租户数据源到缓存", DbConfig.tenantDSMap.size());
	}
}
